了解了加解密的基本流程後,今天就讓我們來看看古人是如何對訊息進行加解密的。透過了解古典密碼學的演進與破綻,我們能更直觀地理解現代密碼學是為了拯救哪些安全漏洞而誕生的。
凱薩密碼源自古羅馬的凱薩大帝(Julius Caesar),他在高盧戰爭期間以此方式加密傳遞軍情,後人便以他的名字為這種加密法命名。
凱薩密碼的原理非常簡單:將每個字母依照字母順序往後推移 n 個位置。這個位移量 n 就是加解密的關鍵變數,也就是金鑰 (Key)。以下圖範例來說,金鑰就是 3(即 A 變成 D、B 變成 E):
替換密碼是凱薩密碼的進階版。它不再固定往後推移相同位數,而是直接定義一張「文字隨機對應表」來進行替換。這張對應表就是我們的金鑰:
密碼學在評估安全性時,最核心的概念之一就是「金鑰空間 (Key Space)」——也就是所有可能金鑰的總數量。
1. 凱薩密碼的盲點:暴力破解 (Brute-force Attack)
以英文字母 26 個字來說,最多只能往後推移 25 種可能。只要攻擊者知道我們使用的是凱薩加密,用電腦(甚至是用人工)將 25 種全部試一遍,不用幾秒鐘就能還原明文。這種將所有可能金鑰試一遍的手段,就是經典的暴力破解。
2. 替換密碼的偽安全:龐大的金鑰空間$
替換密碼的文字對應表共有 26!(26 的階乘)種組合,大約是 4.03 x 10^26 種可能。假設一台電腦一秒鐘能嘗試 1 億個金鑰,理論上需要花上 1,280 億年才能全部試完!
那替換密碼就絕對安全了嗎?並沒有!雖然它能防禦暴力破解,但因為英文文章中字母出現的頻率有固定規律(如字母 E、T 出現頻率最高),攻擊者可以用「頻率分析法 (Frequency Analysis)」輕鬆破解。
從古典密碼學的破綻中,密碼學家歸納出了兩種安全的定義: